/**
 * @projectName: com.xiayuanxing.designPattern
 * @className: Client
 * @author: xiayuanxing
 * @description: TODO
 * @date: 2022/1/10 9:56
 * @version: 1.0
 */
public class Client {

    //中介者模式基本介绍基本介绍:
    // 1)中介者模式（MediatorPattern），用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用，
    // 从而使其耦合松散，而且可以独立地改变它们之间的交互
    // 2)中介者模式属于行为型模式，使代码易于维护
    // 3)比如MVC模式，C（Controller控制器）是M（Model模型）和V（View视图）的中介者，在前后端交互时起到了中间人的作用

    //原理类图的说明-即(中介者模式的角色及职责)
    // 1)Mediator就是抽象中介者,定义了同事对象到中介者对象的接口
    // 2)Colleague是抽象同事类
    // 3)ConcreteMediator具体的中介者对象,实现抽象方法,他需要知道所有的具体的同事类,
    // 即以一个集合来管理HashMap,并接受某个同事对象消息，完成相应的任务
    // 4)ConcreteColleague具体的同事类，会有很多,每个同事只知道自己的行为，而不了解其他同事类的行为(方法)，但是他们都依赖中介者对象

    public static void main(String[] args) {

        //创建一个中介者对象
        Mediator mediator = new ConcreteMediator();

        Alarm alarm = new Alarm(mediator, "alarm");
        CoffeeMachine coffeeMachine = new CoffeeMachine(mediator, "coffeeMachine");
        Curtains curtains = new Curtains(mediator, "curtains");
        TV tv = new TV(mediator, "tv");

        //让闹钟发出消息
        alarm.SendAlarm(0);
        coffeeMachine.FinishCoffee();
        alarm.SendAlarm(1);

    }


}
